#include <stdio.h>
#include <stdlib.h>

// 通过返回值返回分配的空间的地址
int *my_get_data_1(int n){
	// 分配空间
	int *p = (int *)malloc(sizeof(int) * n);
	if(NULL == p){
		printf("内存分配失败\n");
		return NULL;
	}
	// 赋值
	int i = 0;
	for(i = 0; i < n; i++){
		p[i] = i+1;
	}
	return p;
}

// 也可以通过指针的地址传参实现
int my_get_data_2(int n, int **p){
	// 分配空间
	*p = (int *)malloc(sizeof(int) * n);
	if(NULL == *p){
		printf("内存分配失败\n");
		return -1;
	}
	// 赋值
	int i = 0;
	for(i = 0; i < n; i++){
		(*p)[i] = i+1;
	}
	return 0;
}

int main(int argc, const char *argv[])
{
	int count = 0;
	printf("请输入你要获取的数组元素个数:");
	scanf("%d", &count);
	int *q = NULL;
#if 0
	// 测试 my_get_data_1
	// 分配空间 填充数据
	q = my_get_data_1(count);
#else
	// 测试 my_get_data_2 
	my_get_data_2(count, &q);
#endif
	// 输出
	int i = 0;
	for(i = 0; i < count; i++){
		printf("%d ", q[i]);
	}
	printf("\n");

	// 释放内存
	free(q);
	q = NULL;

	return 0;
}
